﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Reflection;
using ParasitoLibrary.Business.Controle;

namespace ParasitoLibrary.Core.Entidade
{
    public partial class Questao : EntidadeParasitoAbstrata
    {
        #region .: Construtores

        public Questao(XElement elemento) : base(elemento)
        {
            this.Nivel = ControleNivel.getInstancia().consultarPorCodigo(elemento.Descendants("nivel").Single().Value);
            this.Assunto = ControleAssunto.getInstancia().consultarPorCodigo(elemento.Descendants("assunto").Single().Value);

            this.ListaRespostas = new List<Resposta>();
            Resposta resposta = null;
            foreach (XElement xElement in elemento.Descendants(typeof(Resposta).Name.ToLower()))
            {
                resposta = new Resposta(xElement);
                this.ListaRespostas.Add(resposta);
            }
        }

        #endregion

        public override XElement toElementoXml()
        {
            Type tipoObjeto = this.GetType();

            XElement elementoRoot = new XElement(tipoObjeto.Name.ToLower());

            XElement elementoCodigo = new XElement("codigo", this.Codigo);
            XElement elementoEnunciado = new XElement("enunciado", this.Enunciado);
            XElement elementoNivel = new XElement("nivel", this.Nivel.Codigo);
            XElement elementoAssunto = new XElement("assunto", this.Assunto.Codigo);

            elementoRoot.Add(elementoCodigo);
            elementoRoot.Add(elementoEnunciado);
            elementoRoot.Add(elementoNivel);
            elementoRoot.Add(elementoAssunto);

            if (listaRespostas != null && listaRespostas.Count != 0)
            {
                foreach (Resposta resposta in listaRespostas)
                {
                    elementoRoot.Add(resposta.toElementoXml());
                }
            }

            return elementoRoot;
        }

    }
}
